package com.jadows.tdog.domain;

import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.lang.Nullable;

import java.util.Date;

/**
 * 联系人
 *
 * @author taojiacheng
 */
@Document(collection = "contact")
@Data
@Accessors(chain = true)
public class Contact {

    @Id
    private String id;

    /**
     * 用户1
     */
    private ContactInfo fromUser;
    /**
     * 用户2
     */
    private ContactInfo toUser;

    /**
     * unionId
     * fromUid 和 toUid 的组合
     */
    @Indexed(unique = true)
    private String unionId;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 根据id获取用户信息
     */
    @Nullable
    public ContactInfo getContactInfoByUid(String uid) {
        if (fromUser.getUid().equals(uid)) {
            return fromUser;
        }
        if (toUser.getUid().equals(uid)) {
            return toUser;
        }
        return null;
    }

    /**
     * 根据id获取对方用户信息
     */
    @Nullable
    public ContactInfo getOtherContactInfoByUid(String uid) {
        if (fromUser.getUid().equals(uid)) {
            return toUser;
        }
        if (toUser.getUid().equals(uid)) {
            return fromUser;
        }
        return null;
    }


    @Data
    public static class ContactInfo {
        /**
         * 联系人
         */
        @Indexed
        private String uid;
        /**
         * 联系人名称
         */
        private String nickname;
        /**
         * 联系人头像
         */
        private String avatar;
        /**
         * 联系人类型
         * 0: 个人 1: 群组
         */
        private Integer uType;

        /**
         * fcm token
         */
        private String fcmToken;


        /**
         * 极光推送id
         */
        private String registrationId;


        /**
         * 删除前的最后一条消息id
         */
        private Long lastMessageIdBeforeDeleted;

        /**
         * 是否已经屏蔽联系人关系
         */
        private Boolean blocked = false;

        /**
         * 屏蔽时间
         */
        private Date blockTime;

        /**
         * 背景色?
         */
        private String bgColor;

        /**
         * 1: 正常 2: 删除
         * 联系人状态
         */
        private Integer status;

    }

}
